package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;

import javax.xml.bind.ParseConversionEvent;

import vista.VentanaPartidos;
import modelo.Liga;
import modelo.Partido;

public class ControladorVentanaPartidos implements ActionListener {
	
	private VentanaPartidos ventanaPartidos;
	private Liga liga;

	public ControladorVentanaPartidos(Liga liga) {
		super();
		ventanaPartidos= new VentanaPartidos();
		ventanaPartidos.setLocationRelativeTo(null);
		ventanaPartidos.setVisible(true);	
		ventanaPartidos.agregarListener(this);
		this.liga = liga;
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand().equalsIgnoreCase("Si")){ 
			if (liga.contarEquipos() > 1)
			{ if (liga.contarUmpires() > (int)(liga.contarEquipos()/2) )
			  { generarPartido();
				//System.out.println(liga.contarEquipos()+ liga.contarUmpires()+(int)(liga.contarEquipos()/2));
			  }
			  else
			  {ventanaPartidos.mostrarMensaje("Debe haber registrado mas de" + (int)(liga.contarEquipos()/2) + "en la liga");
			  }
			}
			else 
				ventanaPartidos.mostrarMensaje("Debe haber registrado al menos 2 equipos en la liga");
		}	
		else if (e.getActionCommand().equalsIgnoreCase("No")){
			ventanaPartidos.cerrarVentana();
		}
	}

	public void generarPartido() {
		partidoscasa();
		partidosvisitante();
		detallepartidos();
		otrodetallepartidos();
	}

	//Genera los partidos siendo 2 veces casa el primer rrecorido del arreglo 
	public void partidoscasa(){
		//System.out.println(liga.contarEquipos());
		int i, j;
	
		for (i=0; i <= (liga.contarEquipos()- 1 ); i ++)
			{
		     //System.out.println(liga.getEquipos().get(i).getNombre());
		     
		 for (j=i+1 ; j < liga.contarEquipos() ; j ++)
			{ String casa = liga.getEquipos().get(i).getNombre();
			  String visitante = liga.getEquipos().get(j).getNombre();
			  //System.out.println(liga.getEquipos().get(j).getNombre());
			  Partido partido1 = new Partido(casa, visitante);
			  liga.agregarPartidos(partido1);
			  Partido partido2 = new Partido(casa,visitante);
			  liga.agregarPartidos(partido2);
			  //System.out.println(liga.getPartidos().get(0).getCasa());
			}	
		}
	}
	
	//Genera los partidos siendo 2 veces visitante el primer rrecorido del arreglo
	public void partidosvisitante(){
		for (int i=0; i <= (liga.contarEquipos()-1) ; i ++)
		{ for (int j=i+1 ; j < liga.contarEquipos() ; j ++)
			{ String visitante = liga.getEquipos().get(i).getNombre();
			  String casa = liga.getEquipos().get(j).getNombre();
			  Partido partido1 = new Partido(casa, visitante);
			  liga.agregarPartidos(partido1);
			  Partido partido2 = new Partido(casa,visitante);
			  liga.agregarPartidos(partido2);
			  //System.out.println("Equipo visitante"+liga.getPartidos().get(6).getVisitante());
			}	
		}
	}
	
    //Genera los codigo, carreras, jugadores que anotaron e inings a los partidos 
	public void detallepartidos(){
		int innings=9;
		int cuadrCasa=0;
		int cuadrVisit=0;
		int carrCasa=0;
		int carrVisit=0;
		
		for (int i=0; i< liga.contarPartidos(); i++)
		{
			liga.getPartidos().get(i).setCodPartido(i);
			carrCasa = (int)Math.floor(Math.random()*15);
			carrVisit = (int)Math.floor(Math.random()*15);
			//System.out.println(carrVisit);
			liga.getPartidos().get(i).setCarrCasa(carrCasa);
			//System.out.println(liga.getPartidos().get(i).getCarrCasa());
			
			if (carrCasa == carrVisit)
				{while (carrCasa== carrVisit)
				 {carrVisit =(int)Math.floor(Math.random()*15);
				  liga.getPartidos().get(i).setInnings(innings ++);
				 }
				liga.getPartidos().get(i).setCarrVisit(carrVisit);
			    }
			
			if (carrCasa > 2)
				{cuadrCasa = (int)Math.floor(Math.random()*2);
				}
			liga.getPartidos().get(i).setCuadrCasa(cuadrCasa);
			
			if (carrVisit > 2)
				{cuadrVisit= (int)Math.floor(Math.random()*2);
				}
			liga.getPartidos().get(i).setCuadrVisit(cuadrVisit);
		}	
		
		/*
		for (int i=0; i< liga.contarPartidos(); i++)
		{
			if (liga.getPartidos().get(i).getCuadrCasa()> 0)
			{ for (int j=0;j<liga.getPartidos().get(i).getCuadrCasa(); j++)
				{ String equipo = liga.getPartidos().get(i).getCasa();
				  int k=0;
				  int posiequip=0;
				  while (equipo != liga.getEquipos().get(k).getNombre())
				  {posiequip = posiequip =1;}				
				  int posijug= (int)Math.floor(Math.random()*9); 
				  String jugador = liga.getEquipos().get(posiequip).getJugadores().get(posijug).getNombre();
				  liga.getPartidos().get(i).agregarJugHomerunsCasa(jugador);
				  System.out.println(liga.getPartidos().get(i).getJugHomerunsCasa().get(0));  	
				}	
			}
			if (liga.getPartidos().get(i).getCuadrVisit()> 0)
			{ for (int j=0;j<liga.getPartidos().get(i).getCuadrVisit(); j++)
				{ String equipo = liga.getPartidos().get(i).getVisitante();
				  int k=0;
				  int posiequip=0;
				  while (equipo != liga.getEquipos().get(k).getNombre())
				  {posiequip = posiequip =1;}				
				  int posijug= (int)Math.floor(Math.random()*9); 
				  String jugador = liga.getEquipos().get(posiequip).getJugadores().get(posijug).getNombre();
				  liga.getPartidos().get(i).agregarJugHomerunsVisit(jugador);
				  System.out.println(liga.getPartidos().get(i).getJugHomerunsVisit().get(0));  	
				}	
			}
		}*/
		
	}
	
	private void otrodetallepartidos() {
		Date d=new Date(); 
		System.out.println(Integer.toString(d.getDay())); 
		System.out.println(String.valueOf(d)); 
	}
	
	
}
	
	




